package command;

import beans.InvitationBean;
import beans.ListeInvitations;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.*;

/**
 * @author Antonin Mozzati
 * @author Yannick Schürter
 */
public class InviterCommand implements Command {

    @Override
    public String getCommandName() {
	return "inviterCommand";
    }

    @Override
    public ActionFlow actionPerform(HttpServletRequest request) {
	String vue = "rechercherUtilisateur";
	String erreur = "erreur";

	System.out.println(this.getCommandName());


	int idFlux = Integer.parseInt(request.getParameter("id_flux"));
	int peutPoster = 0;
	if (request.getParameter("peutPoster") != null) {
	    peutPoster = 1;
	}
	int idSession = (Integer) request.getSession(false).getAttribute("sessionID");
	String loginInviteur = (String) request.getSession(false).getAttribute("sessionLogin");
	int idInvite = Integer.parseInt(request.getParameter("idInvite"));

	ListeInvitations listeInvitations;

	try {
	    // On récupère la liste d'invitations du ServletContext
	    listeInvitations = (ListeInvitations) request.getServletContext().getAttribute("listeInvitations");
	} catch (Exception ex) {
	    Logger.getLogger(InviterCommand.class.getName()).log(Level.SEVERE, null, ex);
	    return new ActionFlow(erreur, erreur + ".html", true);
	}

	System.out.println(idFlux+" "+idInvite);
	if (listeInvitations.estInvite(idFlux, idInvite)) {
	    request.setAttribute("erreur", "Erreur : l'utilisateur est déjà invité");
	    return new ActionFlow(vue, vue + ".jsp", false);
	}

	listeInvitations.addInvitation(new InvitationBean(1, idInvite, idFlux, peutPoster));
	request.setAttribute("ok", "Invitation envoyée");
	System.out.println("invitation envoyée");

	return new ActionFlow(vue, vue + ".jsp", false);
    }
}
